密鑰生成:
let key = P256.Signing.PrivateKey()
創建一個 P256 橢圓曲線的私鑰。
設置過期時間:
let expiredAt = Date().addingTimeInterval(60)
設置 JWT 的過期時間為當前時間後的 60 秒。
創建 JWT 聲明:
let mockClaims = DefaultJWTClaimsImpl(
iss: "testXiang",
sub: "Xiang",
exp: expiredAt
)
設置 JWT 的聲明,包括發行者(iss)、主題(sub)和過期時間(exp)。
生成 JWT:
let jwt = try JWT.signed(
payload: mockClaims,
protectedHeader: DefaultJWSHeaderImpl(algorithm: .ES256),
key: key
)
使用 ES256 算法和私鑰簽署 JWT。
簽名的目的是:
驗證 JWT 的完整性,確保它在傳輸過程中沒有被篡改。
證明 JWT 確實是由聲稱的發行者簽發的。
防止未經授權、偽造或修改 JWT。
獲取 JWT 字符串:
let jwtString = jwt.jwtString
驗證 JWT:
let verifiedJWT = try JWT.verify(jwtString: jwtString, senderKey: key.publicKey)
使用公鑰驗證 JWT 的有效性。
提取驗證後的載荷:
let verifiedPayload = verifiedJWT.payload
輸出結果:
打印 JWT 字符串和驗證後的載荷內容。
這個程式碼示例展示了 JWT 的完整生命週期,從生成到驗證,使用了安全的非對稱加密方法。